//
//  LCWelcomeView.swift
//  SwiftWeiBo
//
//  Created by LiCheng on 2017/2/15.
//  Copyright © 2017年 LiCheng. All rights reserved.
//

import UIKit
import SDWebImage

class LCWelcomeView: UIView {

    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var iconImgView: UIImageView!
    @IBOutlet weak var bottomCons: NSLayoutConstraint!

    /// 类方法，创建视图
    class func welcomeView() -> LCWelcomeView {

        let nib = UINib.init(nibName: "LCWelcomeView", bundle: nil)

        // .first
        let view = nib.instantiate(withOwner: nil, options: nil)[0] as! LCWelcomeView

        // 视图大小
        // - 从 xib 加载的视图，默认是 600 * 600
        view.frame = UIScreen.main.bounds

        return view
    }

    /// xib 加载完成调用
    override func awakeFromNib() {

        
        // 1. url
        guard let urlStr = LCNetworkManager.shared.userAccount.avatar_large,
            let url = URL(string: urlStr) else {
            return
        }

        // 2. 设置头像
        //    - 如果不指定占位图像，之前设置的图像会被清空
        iconImgView.sd_setImage(with: url, placeholderImage: UIImage(named: "avatar_default_big"))

        // 3. 设置圆角
        // - 此时 iconView 的 bounds 还没有设置， 没有值
        // - 如果在这里使用代码设置圆角 使用 iconImgView.bounds.width 取到的值 为 0
        // - 所以无法设置上
        // - 可以将宽度约束脱线， 使用宽度约束/2
        // - 使用自动布局时， 尽量避免修改 frame
        // iconImgView.layer.cornerRadius = iconImgView.bounds.width / 2
    }

    /// 视图被添加到 window 上时调用，表示视图已经显示
    override func didMoveToWindow() {


        // 视图时使用自动布局来设置的，只是设置了约束
        // - 当视图被添加到窗口上时，根据父视图的大小计算约束值，更新控件位置

        // 1. layoutIfNeeded 会直接按照当前的约束直接更新控件的位置
        //    - 执行之后，控件所在的位置就是 xib 中布局的位置， frame 已经设置好
        self.layoutIfNeeded()


        // 2. 修改约束
        bottomCons.constant = bounds.size.height - 220

        // 3. 动画
        // - 如果控件们的 frame 还没有计算好， 所有的约束回一起来做动画
        UIView.animate(withDuration: 1.5,
                       delay: 0,
                       usingSpringWithDamping: 0.7,
                       initialSpringVelocity: 0,
                       options: [],
                       animations: { 

                        // 更新约束
                        self.layoutIfNeeded()
        }) { (_) in

            // label显示
            UIView.animate(withDuration: 1.0, animations: {
                self.label.alpha = 1

            }, completion: { (_) in

                // 移除视图
                self.removeFromSuperview()
            })
        }
    }
}
